const fs = require('fs');
const path = require('path');

var all_data = {};
var file_count = 0;
var read_count = 0;

/** 
 * 文件遍历方法 
 * @param filePath 需要遍历的文件路径 
 */
function fileDisplay(filePath) {
    //根据文件路径读取文件，返回文件列表  
    fs.readdir(filePath, function (err, files) {
        if (err) {
            console.warn(err)
        } else {
            //遍历读取到的文件列表  
            files.forEach(function (filename) {
                //获取当前文件的绝对路径  
                var filedir = path.join(filePath, filename);
                //根据文件路径获取文件信息，返回一个fs.Stats对象  
                fs.stat(filedir, function (eror, stats) {
                    if (eror) {
                        console.warn('获取文件stats失败');
                    } else {
                        var isFile = stats.isFile();//是文件  
                        var isDir = stats.isDirectory();//是文件夹  
                        if (isFile) {
							if(filedir.indexOf('.json') > -1 && filedir != 'pack.json'){
								// console.log(filedir);
								file_count++;
								readFile(filedir);
							}
                        }
                        if (isDir) {
                            fileDisplay(filedir);//递归，如果是文件夹，就继续遍历该文件夹下面的文件  
                        }
                    }
                })
            });
        }
    });
}

function readFile(filePath) {
	fs.readFile(filePath,'utf8',function(err,data){
		console.log(filePath);
		let obj = JSON.parse(data);
		let needAdd = '';
		let start = 1;
		let end = filePath.length - 5;
		let type = '';
		let sub = '';

		if(filePath == 'code.json') {
			// console.log('code:',filePath);
			type = 'code';
		}
		else if(filePath == 'head.json') {

			// console.log('head:',filePath);
			type = 'head';
		}
		else if(filePath == 'type.json') {

			// console.log('head:',filePath);
			type = 'type';
		}
		else if(filePath.indexOf('app') == 0){

			// console.log('app:',filePath);
			type = 'app';
			sub = filePath.substring(start+type.length,end);
		}
		else if(filePath.indexOf('login') == 0){
			
			// console.log('login:',filePath);
			type = 'login';
			sub = filePath.substring(start+type.length,end);
		}
		else if(filePath.indexOf('pay') == 0){
			
			// console.log('pay:',filePath);
			type = 'pay';
			sub = filePath.substring(start+type.length,end);
		}
		else if(filePath.indexOf('popgame') == 0){
			
			// console.log('popgame:',filePath);
			type = 'popgame';
			sub = filePath.substring(start+type.length,end);
		}
		else if(filePath.indexOf('register') == 0){
			
			// console.log('register:',filePath);
			type = 'register';
			sub = filePath.substring(start+type.length,end);
		}

		if(type.length > 0){
			if(sub.length > 0){
				if(all_data[type] == null){
					all_data[type] = {};
				}
				all_data[type][sub] = obj;
			}
			else{
				all_data[type] = obj;
			}
		}

		read_count++;
		//暂时可用
		if(read_count == file_count){
			fs.writeFile('pack.json',JSON.stringify(all_data, null, "\t"),(err) =>{
				if(err) throw err;
				console.log('complete!');
			})
		}
	});
}

fileDisplay('./');